package com.chenchao.javafile;

import java.io.File;
import java.io.IOException;

/**
 * @encoding : UTF-8
 * @Time : 2020/11/14 19:04
 * @Author : Chen Chao
 * @File : javaSE.com.chenchao.javaFile.Test1.java
 * @Software : IntelliJ IDEA
 * @since : 1.8
 */
public class Test1 {
    public static void main(String[] args) {

        //test();
        //test2();
        //test3();
        test4();
    }
    public static void test(){
        //File三种构造方式,不管文件存不存在，都不影响创建File对象
        File gg = new File("gg.txt");
        System.out.println(gg);
        File file = new File("C:\\mycode","gg.txt");
        //“\\"两道，因为‘\a'之类的存在转义
        System.out.println(file);
        File file2 = new File("C:/mycode");
        //’/‘不存在转义问题
        File file1 = new File(file2, "kk.txt");
        System.out.println(file1);
    }

    /**
     * file常用方法
     */
    public static void test2(){
        File file = new File("C:\\mycode","jk.txt");
        File dict = new File("C:\\mycode\\包");
        //获取路径名
        File absoluteFile = file.getAbsoluteFile();
        System.out.println(absoluteFile);
        String path = file.getPath();
        System.out.println(path);

        //获取文件名，如果是文件夹就返回文件名
        String name = file.getName();
        System.out.println(name);
        System.out.println(dict.getName());
        //获取文件大小,如果是目录返回值暂时不明确
        long length = file.length();
        System.out.println(length);
        System.out.println(dict.length());

        //判断文件是否存在
        boolean exists = file.exists();
        System.out.println(exists);
        System.out.println(dict.exists());
        System.out.println(new File("C:\\mycode\\不存在的文件.txt"));

        //判断是不是文件
        boolean file1 = file.isFile();
        System.out.println(file1);
        System.out.println(dict.isFile());

        //判断是否是目录
        System.out.println(file.isDirectory());
        System.out.println(dict.isDirectory());
    }

    /**
     * 创建文件与目录
     */
    public static void test3(){
        File file = new File("mytest.txt");
        if(!file.exists()){
            try {
                boolean newFile = file.createNewFile();
                //返回值为文件是否创建成功
                //在项目路径下创建文件，跟src同级
                System.out.println(file + "创建" +newFile);
            } catch (IOException e) {
                e.printStackTrace();
            } 
        }
        File dir = new File("gg");
        System.out.println(dir.exists());
        if(!dir.exists()){
            //创建目录，返回结果是否创建成功,创建后会被idea隐藏
            boolean mkdir = dir.mkdir();
            System.out.println(dir+"创建"+mkdir);
        }
        //创建多级目录
        File dirs= new File("test/test/test");
        if(!dirs.exists()){
            boolean mkdirs = dirs.mkdirs();
            //创建多级目录用mkdirs(),返回值为创建结果
            System.out.println(mkdirs);
        }
        //目录删除
        System.out.println("目录存在"+dirs.exists());
        boolean delete = dirs.delete();
        System.out.println("删除"+delete);
        System.out.println("目录存在"+dirs.exists());
    }
    public static void test4(){
        File dir = new File("C:\\mycode\\newjava\\javaSE");
        System.out.println("目录是否存在"+dir.exists());
        //获取当前目录下所有的文件名和文件夹的名组成的字符串数组
        String[] list = dir.list();
        //如果不存在改目录list为null,for循环报空指针异常
        for (String s : list) {
            System.out.println(s);
        }
        //获取目录下所有文件及目录的File对象
        File[] files = dir.listFiles();
        for (File file : files) {
            if(file.isDirectory()){
                System.out.println(file.getName()+"是目录");
            }else if(file.isFile()){
                System.out.println(file.getName()+"是文件");
            }

        }
    }
    public static void test5(){
    
    }
}
